package org.easy.core.util;

import com.alibaba.fastjson.JSON;

public class JsonExtractUtil {


    /**
     * 从markdown json 中提取json  ```json开头  ```结尾
     *
     * @param markdownJson
     * @return
     */
    public static String extractJsonFromMarkDownJson(String markdownJson) {
        return removeSurroundingText(markdownJson, "```json", "```");
    }

    private static String removeSurroundingText(String input, String startPattern, String endPattern) {
        input = input.replace("\\", "");
        if (JSON.isValid(input)) {
            return input;
        }

        int startIndex = input.indexOf(startPattern);
        if (startIndex >= 0) {
            startIndex += startPattern.length();
        }
        int endIndex = input.indexOf(endPattern, startIndex);
        if (startIndex == -1 && endIndex == -1) {
            return "";
        }

        if (startIndex != -1 && endIndex != -1) {
            return input.substring(startIndex, endIndex);
        }

        if (startIndex != -1) {
            return input.substring(startIndex);
        }

        if (endIndex != -1) {
            return input.substring(0, endIndex);
        }
        return input;
    }

    public static void main(String[] args) {
        System.out.println("1" + extractJsonFromMarkDownJson(" ```json[{\\\"name\\\":\\\"getWeather\\\",\\\"params\\\":{\\\"province\\\":\\\"浙江省\\\",\\\"city\\\":\\\"杭州市\\\"}}]```"));
        System.out.println("2" + extractJsonFromMarkDownJson("[{\\\"name\\\":\\\"getWeather\\\",\\\"params\\\":{\\\"province\\\":\\\"浙江省\\\",\\\"city\\\":\\\"杭州市\\\"}}]```"));
        System.out.println("3" + extractJsonFromMarkDownJson("```json[{\\\"name\\\":\\\"getWeather\\\",\\\"params\\\":{\\\"province\\\":\\\"浙江省\\\",\\\"city\\\":\\\"杭州市\\\"}}]"));
        System.out.println("4" + extractJsonFromMarkDownJson("[{\\\"name\\\":\\\"getWeather\\\",\\\"params\\\":{\\\"province\\\":\\\"浙江省\\\",\\\"city\\\":\\\"杭州市\\\"}}]"));
        System.out.println("5" + extractJsonFromMarkDownJson("根据提供的自然语言文本，无法获取关于人物画像的具体信息。文本内容主要是用户与某个系统或服务的对话，请求讲笑话，但没有提供关于用户或其他任何人的详细信息。因此，无法完善人物画像。人物画像的所有字段都保持“未知”。"));
    }

}


